#ifndef USER_QUEUE_H
#define USER_QUEUE_H

#include <stdbool.h>
#include <stdint.h>
#include <stddef.h>

// 队列结构体
typedef struct {
    void **data;       // 数据指针数组
    size_t capacity;   // 队列容量
    size_t size;       // 当前队列大小
    size_t front;      // 队列头索引
    size_t rear;       // 队列尾索引
} Queue_t;

// 初始化队列
bool queue_init(Queue_t *queue, size_t capacity);

// 销毁队列
void queue_destroy(Queue_t *queue);

// 入队（添加元素）
bool queue_enqueue(Queue_t *queue, void *item);

// 出队（移除元素）
void *queue_dequeue(Queue_t *queue);

// 获取队列当前大小
size_t queue_size(Queue_t *queue);

// 判断队列是否为空
bool queue_is_empty(Queue_t *queue);

// 判断队列是否已满
bool queue_is_full(Queue_t *queue);

#endif // USER_QUEUE_H
